#pragma once

#include "common/BlockingQueue.h"
#include "common/EventBase.h"
#include "common/TopologyUpdate.h"
#include "Model.h"

#include <folly/ProducerConsumerQueue.h>

namespace nexus {

class ModelManager : public EventBase {
 public:
  ModelManager(BlockingQueue<std::string>& routeUpdatesQueue,BlockingQueue<TopologyUpdate>& topologyUpdatesQueue);
  ~ModelManager(){};

 private:
  void processTopologyUpdate(TopologyUpdate& update);

  BlockingQueue<std::string>& routeUpdatesQueue_;
  BlockingQueue<TopologyUpdate>& topologyUpdatesQueue_;
  Model model_;
};

} // namespace nexus